package com.bwie.common.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;

/**
 * @className: Coupon
 * @Description: TODO
 * @version: v1.８.0
 * @author: 刘茂锴
 * @date: 2025/10/13 10:23
 */
@Data
public class Coupon {
    //主键id
    private String id;
    //优惠券名称
    @NotBlank(message = "优惠券名称不能为空")
    private String couponName;
    //优惠券类型
    @NotNull(message = "优惠类型不能为空")
    private Integer couponTypeId;
    //优惠券类型
    private String couponTypeName;
    //发放开始时间
    @NotNull(message = "发放开始时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date distributionStartTime;
    //发放结束时间
    @NotNull(message = "发放结束时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date distributionEndTime;
    //有效开始时间
    @NotNull(message = "有效期开始时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date effectiveStartTime;
    //有效截至时间
    @NotNull(message = "有效期结束时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date effectiveEndTime;
    //活动品牌id
    @NotNull(message = "活动品牌不能为空")
    private Integer eventBrandId;
    //活动品牌名称
    private String eventBrandName;
    //活动端口 1小程序 2收银机 0全部
    @NotNull(message = "活动端口不能为空")
    private Integer activePort;
    //领取范围 1付费会员 2普通会员
    @NotNull(message = "领取范围不能为空")
    private Integer scopeCollection;
    //领取方式 1手动领取 2赠送券
    @NotNull(message = "领取方式不能为空")
    private Integer methodReceiving;
    //限领数量 1不限制 2限制
    @NotNull(message = "限购数量不能为空")
    private Integer purchaseLimit;
    //发放数量
    private Integer distributionQuantity;
    //商品范围id
    @NotNull(message = "商品范围不能为空")
    private Integer goodsScopeId;
    //商品范围名称
    private Integer goodsScopeName;
    //适用范围 1与折扣券叠加使用 2与活动叠加使用 0不可叠加
    @NotNull(message = "适用范围不能为空")
    private Integer scopeApplication;
    //用户id
    private Integer userId;
    //用户名
    private String username;
    //门店范围
    @NotNull(message = "门店范围不能为空")
    private Integer storeId;
    //门店名称
    private String storeName;
    //活动规则
    private String eventRules;
    //活动状态 1进行中 2待开始 3已暂停 4已结束
    private Integer status;
}
